home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / diskdup / diskdup.h < prev    next >
Text File  |  1993-07-08  |  5KB  |  150 lines

  1. /********************************************************************
  2.  *                                                                    *
  3.  *                            DISKDUP                            *
  4.  *                                                                    *
  5.  *                        オンメモリ型 DISKCOPY                        *
  6.  *                                                                    *
  7.  *                            diskdup.exp                                *
  8.  *                                                                    *
  9.  *                            for FM-TOWNS                            *
  10.  *                                                                    *
  11.  *            Copyright (c) ちにゃと & Tymic 1992. 1993.        *
  12.  *                                                                    *
  13.  *                            メイン ヘッダー                            *
  14.  *                                                                    *
  15.  ********************************************************************/
  16.  
  17. typedef unsigned char        uchar;        /* 無符号  8 bit */
  18. typedef unsigned short        ushort;        /* 無符号 16 bit */
  19. typedef unsigned int        uint;        /* 無符号 32 bit */
  20. typedef unsigned long        ulong;        /* 無符号 32 bit */
  21.  
  22.  
  23. /********************************************************************
  24.     定数定義
  25. *********************************************************************/
  26.  
  27. #define    VER                "0.89"            /* バージョン 番号 */
  28.  
  29. #define    OK                0                /* 正常 */
  30. #define    NG                -1                /* 異常 */
  31. #define    TRUE            1                /* 真 */
  32. #define    FALSE            0                /* 偽 */
  33.  
  34. #define MAXHEAD            2                /* ヘッド 番号最大値 */
  35.  
  36. #define MAXCYL_2HD        77                /* 2HD シリンダ 番号最大値 */
  37. #define MAXCYL_2DD        80                /* 2DD シリンダ 番号最大値 */
  38.  
  39. #define MAXSEC_12        8                /* 1.2M 2HD セクタ 番号最大値 */
  40. #define MAXSEC_720        9                /* 720K 2DD セクタ 番号最大値 */
  41. #define MAXSEC_640        8                /* 640K 2DD セクタ 番号最大値 */
  42.  
  43. #define SECLEN512        512                /* セクタ レングス 512 */
  44. #define SECLEN1024        1024            /* セクタ レングス 1024 */
  45.  
  46. #define MODE1_12        0x0003            /* 1.2M 2HD ドライブ モード 1 */
  47. #define MODE2_12        0x0208            /* 1.2M 2HD ドライブ モード 2 */
  48. #define MODE1_720        0x0012            /* 720K 2DD ドライブ モード 1 */
  49. #define MODE2_720        0x0209            /* 720K 2DD ドライブ モード 2 */
  50. #define MODE1_640        0x0012            /* 640K 2DD ドライブ モード 1 */
  51. #define MODE2_640        0x0208            /* 640K 2DD ドライブ モード 2 */
  52.  
  53. #define FD0_DRVNO        0x0020            /* フロッピー デバイス 0 */
  54. #define FD1_DRVNO        0x0021            /* フロッピー デバイス 1 */
  55.  
  56. #define DISKSIZE        SECLEN1024 * \
  57.                         MAXSEC_12 * \
  58.                         MAXCYL_2HD * \
  59.                         MAXHEAD            /* ディスク 読み込み バッファ レングス */
  60.  
  61. enum _DISKTYPE {                        /* フロッピー ディスク 種別番号 */
  62.     TYPE_NOT            = 0,            /* 未対応 ディスク */
  63.     TYPE_2HD_12,                        /* 1.2M 2HD */
  64.     TYPE_2DD_720,                        /* 720K 2DD */
  65.     TYPE_2DD_640,                        /* 640K 2DD */
  66.     TYPE_END,                            /* ダミー */
  67. };
  68.  
  69. enum _ERRCODE {                            /* エラー メッセージ 番号 */
  70.     NOERR                = 0,            /* エラー 無し 正常終了 */
  71.     ERRMODESET,                            /* モード セット エラー */
  72.     ERRDISKREAD,                        /* ディスク リード エラー */
  73.     ERRDISKWRITE,                        /* ディスク ライト エラー */
  74.     ERRDISKSET,                            /* ディスク 設定 エラー */
  75.     ERRDISKTYPE,                        /* 未対応 ディスク エラー */
  76.     ERRNOTDISK,                            /* ドライブ ノット レディー */
  77.     ERRPROTECT,                            /* 書き込み禁止 */
  78.     ERRFORMAT,                            /* フォ-マット エラ- */
  79. };
  80.  
  81. #define PreAmblLength        146            /* プレ アンブル データ レングス */
  82. #define PosAmblLength        600            /* ポスト アンブル データ レングス */
  83. #define SecData1024Length    1200        /* 1024 セクタ データ レングス */
  84. #define SecData512Length    688            /* 512 セクタ データ レングス */
  85.  
  86. #define RETRYMAX            5            /* エラー リトライ 回数 */
  87.  
  88. #define HelpM1  "パラメ-タ-は先頭に '-' か '/' をつけます"
  89. #define HelpM2  "大文字でも小文字でも構いません"
  90. #define HelpM3    "-S -s  読み込んだディスクの内容のデ-タファイルを作成します"
  91. #define HelpM4    "-L -l  デ-タファイルを読み込んでデュプリケ-トをします"
  92. #define HelpM5    "-F -f  フォ-マットを行いながらデュプリケ-トします"
  93. #define HelpM6    "-D -d フォ-マットをせずにデュプリケ-トします"
  94. #define HelpM7    "-I -i エラ-時以外に選択/確認を行いません。"
  95. #define HelpM8    "-H -h -? ヘルプメッセ-ジを表示します"
  96. #define HelpM9    "ファイル名  デ-タファイル名を指定します。ドライブ名パス名も含みます "
  97. #define HelpM10 "例1  -F -I   フォ-マットをします。又選択/確認を行いません。"
  98. #define HelpM11 "例2  -S MAOUDX_A.DSK"
  99. #define HelpM12 " デ-タファイルを指定されたファイル名で作成します"
  100.  
  101. /********************************************************************
  102.     構造体定義
  103. *********************************************************************/
  104.  
  105. typedef struct _FORMPARA {        /* フォーマット データ 圧縮形式 */
  106.     int        fdata;                /* フォーマット データ */
  107.     int        cnt;                /* 展開 レングス */
  108. } FORMPARA;
  109.  
  110. typedef struct _IntParaBlk {    /* リアル モード 割り込み発行 パラメータ ブロック */
  111.     ushort    intno;                /* 割り込み番号 */
  112.     ushort    rds;                /* リアル モード ds */
  113.     ushort    res;                /* リアル モード es */
  114.     ushort    rfs;                /* リアル モード fs */
  115.     ushort    rgs;                /* リアル モード gs */
  116.     uint    reax;                /* リアル モード eax */
  117.     uint    redx;                /* リアル モード edx */
  118. } IntParaBlk;
  119.  
  120.  
  121. /********************************************************************
  122.     外部参照
  123. *********************************************************************/
  124.  
  125. #ifndef    __PRGMAIN__
  126. extern char Title1[];                /* タイトル 1 */
  127. extern char Title2[];                /* タイトル 2 */
  128. extern char *ErrMsgTbl[];            /* エラー メッセージ テーブル */
  129. /* extern char fname;*/
  130. #endif
  131.  
  132.  
  133. /********************************************************************
  134.     プロトタイプ
  135. *********************************************************************/
  136.  
  137. void main( int, char** );                            /* メイン 処理 */
  138. void PrgExit1( void );                        /* プログラム 終了処理 */
  139. void PrgExit2( void );                        /* プログラム 終了処理 */
  140. void CopyPrgMain( void );                    /* コピー プログラム メイン */
  141. int SetDiskDrvMode( int, int );                /* ドライブ モード 設定 */
  142. int ReadDiskAll( int, char *, int );        /* ディスク 読み込み */
  143. int WriteDiskAll( int, char *, int );        /* ディスク 書き込み */
  144. int TrackFormat( int, int, int );            /* 1 トラック フォーマット */
  145. void MakeFormData( int, int, int );            /* フォーマット データ 作成 */
  146. int ChkFormatType( int );                    /* フォーマット タイプ チェック */
  147.  
  148.  
  149. /* end of file */
  150.